package com.scsj.cloud.hdata.service;

import java.util.Set;

import org.springframework.stereotype.Service;

import com.scsj.cloud.hdata.inte.LinkFilter;
import com.scsj.cloud.hdata.model.LinkQueue;

/**
 * @C 爬取特定网页的图片
 * @author caoxiubin
 * 
 */
@Service
public class Crawler {
	  
	/**
	 * 抓取过程
	 * @return
	 * @param seeds
	 */
	public void crawling(String url) { 
		
		// 定义过滤器
		LinkFilter filter = new LinkFilter() {
			public boolean accept(String url) {
				//这里过滤规则随需要爬的网站的规则进行改变，推荐使用正则实现，本人是爬豆瓣网站
//				if(url.indexOf("douban.com/group/topic") != -1 || url.indexOf("douban.com/group/haixiuzu/discussion?start") != -1 ) {
//					return true;
//				}else {
//					return false;
//				}
				// 暂时不要过滤规则
				return true;
			}
		};
		
		// 初始化 URL 队列
		LinkQueue.addUnvisitedUrl(url);
		
		// 循环条件，待抓取的链接不空
		while (!LinkQueue.unVisitedUrlsEmpty()) {
			// 队头URL出队列
			String visitUrl = (String) LinkQueue.unVisitedUrlDeQueue();
			if (visitUrl == null)
				continue;
			
			DownloadPic.downloadPic(visitUrl);
 
			// 提取出下载网页中的 URL
			Set<String> links = ParserHttpUrl.extracLinks(visitUrl, filter);
			// 新的未访问的 URL 入队
			for (String link : links) {
				LinkQueue.addUnvisitedUrl(link);
			}
		}
	}
 
	
}
